/*
 * Web functions, effect and forms sending
 * Author
 * Kevin Villalobos (@kvillaloboscr)
 *
 * License
 * Copyright (c) 2012
 *
 * Licensed under MIT License
 */

$(document).ready(function()
{
	/* Remover accents */
	var htmlentities_before = Array("á","é","í","ó","ú","ã","õ","â","ê","ê","ô","û","ç","ü","Á","É","Í","Ó","Ú","Ã","Õ","Â","Ê","Î","Ô","Û","Ç","Ü","ñ","Ñ");
	var htmlentities_after = Array('a','e','i','o','u','a','o','a','e','e','o','u','c','u','A','E','I','O','U','A','O','A','E','I','O','U','C','U','n','N');

	jQuery.extend(
	{
		entities: function(text)
		{
			for(var i = 0; i < htmlentities_before.length; i++)
			{
				var cmd = "text = text.replace(/" + htmlentities_before[i] + "/g, \"" + htmlentities_after[i] + "\")";
				eval(cmd);
			}

			return text;
		},

		postJSON: function(url, datos, callback)
		{
			$.post(url, datos, callback, 'json');
		}
	});

	// Validate a form field
	$.fn.validate = function(filter)
	{
		var response;
	
		this.each(function()
		{
			var text = $(this).val();
			
			response = (filter.test($.entities(text))) ? true : false;
		});
		
		return response;
	}

	// Animate error
	$.fn.parpadear = function(numero,velocidad)
	{
		this.each(function parpadear()
		{
			for(i = 1; i <= numero; i++)
			{
				$(this).css({border:'2px solid'}).animate({borderColor:'#f38282'}, velocidad).animate({borderColor:'#F3F3F3'}, velocidad);
			}
		});
	}

	// Show image in large preview
	$('#imgController > a').bind('click', function()
	{
		var prevImg = $('#imgDisplay').children().css({'opacity':0});
		var thisImg = $(this).children().css({'opacity':0});

		prevImg.appendTo($(this)).animate({'opacity':1});
		thisImg.appendTo('#imgDisplay').animate({'opacity':1});

		return false;
	});

	// Search properties
	$('#search').submit(function()
	{
		$('.wrapper').animate({opacity:0}, 200, function()
		{
			$(this).html('<h2>Resultados de la búsqueda</h2><p><img alt="Cargando" src="images/loader.gif" align="middle" /></p>');
			$(this).animate({opacity:1}, 200);

			$.postJSON($('#searchform').attr('action'), $('#searchform').serialize(), function(r)
			{
				if(!r.error)
				{
					texto = '';

					for(var i in r.propiedades)
					{
						texto += '<article class="properties-list">';
							texto += '<figure><a href="' + r.propiedades[i].url + '"><img alt="' + r.propiedades[i].nombre + '" src="' + r.propiedades[i].img + '" /></a></figure>';
							texto += '<div class="property_info_wrapper">';
								texto += '<h3><a href="' + r.propiedades[i].url + '">' + r.propiedades[i].nombre + '</a></h3>';
								texto += '<h4>' + r.propiedades[i].precio + '</h3>';
								texto += '<p>' + r.propiedades[i].info + '</p>';
								texto += '<a href="' + r.propiedades[i].url + '">Leer más</a>';
							texto += '</div>';
						texto += '</article>';
					}

					$('.wrapper').animate({opacity:0}, 200, function()
					{
						$(this).html('<h2>Resultados de la búsqueda</h2>' + texto);
						$(this).animate({opacity:1}, 200);
					});
				}
				else
				{
					$('.wrapper').animate({opacity:0}, 200, function()
					{
						$(this).html('<h2>Resultados de la búsqueda</h2><p>La búsqueda no ha generado resultados.</p>');
						$(this).animate({opacity:1}, 200);
					});
				}
			});
		});

		return false;
	});

	// Contact form
	$('#contact').submit(function()
	{
		var contact_name = $('#contact_name');
		var contact_surname = $('#contact_surname');
		var contact_email = $('#contact_email');
		var contact_phone = $('#contact_phone');
		var contact_subject = $('#contact_subject');
		var contact_msg = $('#contact_msg');
		var error;

		if(!contact_name.validate(/^([a-zA-Z]{2,15})()+$/))
		{
			error = 'Debes escribir tu nombre. Sólo se permiten letras y espacios.';
			contact_name.focus();
		}
		else if(!contact_surname.validate(/^([a-zA-Z]{2,15})()+$/))
		{
			error = 'Debes escribir tu apellido. Sólo se permiten letras y espacios.';
			contact_surname.focus();
		}
		else if(!contact_email.validate(/^\D+([\.-a-z0-9]+)*@\D+([\.-a-z0-9]+)*(\.\D{2,3})+$/))
		{
			error = 'Debes escribir un correo electrónico válido.';
			contact_email.focus();
		}
		else if(!contact_phone.validate(/^(\(\+[0-9]{1,4}\)\s)?([0-9\-]{3,30})$/))
		{
			error = 'Debes escribir un teléfono válido.<br />Ejemplos: (+000) 2222-2222 o 2222-2222.';
			contact_phone.focus();
		}
		else if(!contact_subject.validate(/^([a-zA-Z0-9\s]{5,255})$/))
		{
			error = 'El asunto debe tener más de 5 caracteres.<br />Solo se permiten letras, números y espacios.';
			contact_subject.focus();
		}
		else if(!contact_msg.validate(/^([a-zA-Z0-9\s\.\,\;\:\-\_\¡\!\¿\?]{10,1000})$/))
		{
			error = 'El cuerpo del mensaje solo puede contener letras, números, espacios y símbolos de puntuación';
			contact_msg.focus();
		}

		if(error)
		{
			$('#contact_error').animate({opacity:0}, 200, function()
			{
				$(this).html(error);
				$(this).animate({opacity:1}, 200);
			});
		}
		else
		{
			$('#contact_send').animate({opacity:0}, 200);
			$('#contact_error').animate({opacity:0}, 200, function()
			{
				$(this).html('<span style="color:#999"><img alt="Enviando formulario" src="images/loader-2.gif" /> Enviando formulario</span>');
				$(this).animate({opacity:1}, 200);

				$.postJSON($('#contact').attr('action'), $('#contact').serialize(), function(r)
				{
					if(r.error)
					{
						$('#contact_send').animate({opacity:1}, 200);
						$('#contact_error').animate({opacity:0}, 200, function()
						{
							$(this).html(r.error);
							$(this).animate({opacity:1}, 200);
						});
					}
					else
					{
						if(r.success)
						{
							$('.contactWrapper').animate({height:0, opacity:0}, 200, function()
							{
								$(this).html('<p>El correo se ha enviado exitosamente, gracias por mantenerte en contacto.</p>');
								$(this).animate({height:'15px', opacity:1}, 200);
							});
						}
					}
				});
			});
		}
		return false;
	});

	var thisImg;

	// Upload images
	$('form#propiedad > fieldset > .images > figure > img.upload').bind('dragenter', ignoreDrag).bind('dragover', ignoreDrag).bind('drop', drop);

	function ignoreDrag(e)
	{
		e.originalEvent.stopPropagation();
		e.originalEvent.preventDefault();
	}

	function drop(e)
	{
		ignoreDrag(e);
		var dt = e.originalEvent.dataTransfer;
		var files = dt.files;

		if(dt.files.length > 0)
		{
			var file = dt.files[0];
			$('#guardar_fotos').val(encodeURIComponent(file));
		}


	}


	$('form#propiedad > fieldset > .images > figure > img.upload').bind('click', function()
	{
		$('#guardar_fotos').click();
		window.previaLoader = $(this).next();
		window.previaContainer = previaLoader.next();
		thisImg = $(this);
	});

	$('#guardar_fotos').bind('change', function()
	{
		if($(this).val() != '')
		{
			thisImg.fadeOut();
			$('#uploadImage').submit();
		}
	});

	$('.comodidades > div > label > input').bind('click', function()
	{
		if($(this).is(':checked'))
		{
			$('#guardar_comodidades').val($('#guardar_comodidades').val() + $(this).val() + ',');
		}
		else
		{
			$('#guardar_comodidades').val($('#guardar_comodidades').val().replace($(this).val() + ',', ''));
		}
	});
	$('.comodidades > div > label > input').bind('click', function()
	{
		
	
    $('.guardar_img').each(function() {
    
    // alert($(this).val());
     $('#guardar_img').attr($('.guardar_img').val()  + ',' + $(this).val() + ',');

});
    });

	// Send property
	$('#propiedad').submit(function()
	{
		

 		
		var propiedad_responsable = $('#guardar_responsable_nombre');
		var propiedad_responsable_email = $('#guardar_responsable_email');
		var propiedad_responsable_telefono = $('#guardar_responsable_telefono');
		var proyecto_id = $('#guardar_proyecto_id');
		var propiedad_nombre = $('#guardar_nombre');
		var propiedad_tamanio = $('#guardar_tamanio');
		var propiedad_precio = $('#guardar_precio');
		var propiedad_pisos = $('#guardar_pisos');
		var propiedad_habitaciones = $('#guardar_habitaciones');
		var propiedad_banios = $('#guardar_banios');
		var propiedad_cochera = $('#guardar_cochera');
		var propiedad_info = $('#guardar_info');
		var error;

		if(!propiedad_responsable.validate(/^([a-zA-Z]{2,15})(\s[a-zA-Z]{2,15})+$/))
		{
			error = 'Debes escribir el nombre y al menos un apellido. Sólo se permiten letras y espacios.';
			propiedad_responsable.focus();
			propiedad_responsable.parpadear(3, 'normal');
		}
		else if(!propiedad_responsable_email.validate(/^\D+([\.-a-z0-9]+)*@\D+([\.-a-z0-9]+)*(\.\D{2,3})+$/))
		{
			error = 'Debes escribir un correo electrónico válido.';
			propiedad_responsable_email.focus();
			propiedad_responsable_email.parpadear(3, 'normal');
		}
		else if(!propiedad_responsable_telefono.validate(/^(\(\[0-9]{1,4}\)\s)?([0-9\-]{3,30})$/))
		{
			error = 'Debes escribir un teléfono válido.<br />Ejemplos: (+506) 2222-2222 o 2222-2222.';
			propiedad_responsable_telefono.focus();
			propiedad_responsable_telefono.parpadear(3, 'normal');
		}
		else if(proyecto_id.validate(/^0$/))
		{
			error = 'Debes seleccionar un proyecto.';
			proyecto_id.focus();
			proyecto_id.parpadear(3, 'normal');
		}
		else if(!propiedad_nombre.validate(/^(.{2,255})$/))
		{
			error = 'Debes escribir el nombre de la propiedad';
			propiedad_nombre.focus();
			propiedad_nombre.parpadear(3, 'normal');
		}
		else if(!propiedad_tamanio.validate(/^([0-9]{1,255})(\.[0-9]{1,2})?$/))
		{
			error = 'El tamaño de la propiedad sólo puede contener números o números con decimales';
			propiedad_tamanio.focus();
			propiedad_tamanio.parpadear(3, 'normal');
		}
		else if(!propiedad_precio.validate(/^([0-9]{1,255})(\.[0-9]{1,2})?$/))
		{
			error = 'El precio de la propiedad sólo puede contener números o números con decimales';
			propiedad_precio.focus();
			propiedad_precio.parpadear(3, 'normal');
		}
		else if(!propiedad_pisos.validate(/^([0-9]{1,2})$/))
		{
			error = 'El campo pisos sólo puede contener uno o dos números';
			propiedad_pisos.focus();
			propiedad_pisos.parpadear(3, 'normal');
		}
		else if(!propiedad_habitaciones.validate(/^([0-9]{1,2})$/))
		{
			error = 'El campo habitaciones sólo puede contener uno o dos números';
			propiedad_habitaciones.focus();
			propiedad_habitaciones.parpadear(3, 'normal');
		}
		else if(!propiedad_banios.validate(/^([0-9]{1,2})$/))
		{
			error = 'El campo baños sólo puede contener uno o dos números';
			propiedad_banios.focus();
			propiedad_banios.parpadear(3, 'normal');
		}
		else if(!propiedad_cochera.validate(/^([0-9]{1,2})$/))
		{
			error = 'El campo parqueos sólo puede contener uno o dos números';
			propiedad_cochera.focus();
			propiedad_cochera.parpadear(3, 'normal');
		}
		else if(!propiedad_info.validate(/^(.{10,1000})$/))
		{
			error = 'Debes escribir al menos 10 caracteres.';
			propiedad_info.focus();
			propiedad_info.parpadear(3, 'normal');
		}

		if(error)
		{
			$('#errorForm').animate({opacity:0}, 200, function()
			{
				$(this).html(error);
				$(this).animate({opacity:1}, 200);
			});
		}
		else
		{
			$('#propiedad_guardar').animate({opacity:0}, 200);
			$('#errorForm').animate({opacity:0}, 200, function()
			{
				$(this).html('<span style="color:#999"><img alt="Enviando formulario" src="images/loader-2.gif" /> Enviando propiedad</span>');
				$(this).animate({opacity:1}, 200);

				$.postJSON($('#propiedad').attr('action'), $('#propiedad').serialize(), function(r)
				{
					if(r.success)
					{
						$('#form-wrapper').animate({opacity:0}, 200, function()
						{
							$(this).html('La propiedad se ha enviado exitosamente. Apenas sea aprobada te enviaremos un correo notificándote.');
							$(this).animate({opacity:1});
							document.location = '#form-wrapper';
						});
					}
					else
					{
						$('#propiedad_guardar').animate({opacity:1}, 200);
						$('#errorForm').animate({opacity:0}, 200, function()
						{
							$(this).html(r.error);
							$(this).animate({opacity:1}, 200);
						});
					}
				});
			});
		}

		return false;
	});
});

// Show image preview
function showImagePreview(path)
{
	$('#guardar_img').val($('#guardar_img').val() + path + ',');
	$(previaContainer).attr('src', 'images/tmp/' + path);
	$('#guardar_fotos').val('');
	$(previaLoader).fadeOut('slow'); 
}